module hip.component.physics;
public import hip.component.base;
public import hip.math.collision;
import core.math;

class BodyRectComponent : IBaseComponent!BodyRectComponent
{
    Vector2 position;
    Size size;
    Vector2 velocity;

    @nogc @safe
    {
        Rect rect(){return Rect(position.x, position.y, cast(float)size.w, cast(float)size.h);}
        ///Use expanded rect for detecting pre collision steps.
        Rect expandedRect(){return Rect(position.x-size.w/2, position.y-size.h/2, cast(float)size.w*2, cast(float)size.h*2);}
        Rect expandedRectVel()
        {
            import hip.math.utils;
            const vel = Vector2(abs(velocity.x), abs(velocity.y));
            return Rect(position.x-size.w/2-vel.x/2, position.y-size.h/2-vel.y/2, cast(float)size.w*2+vel.x, cast(float)size.h*2+vel.y);
        }
    }
}